package com.easygem.common.model.front;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wuwenze.poi.annotation.Excel;
import com.wuwenze.poi.annotation.ExcelField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.sql.Timestamp;
import java.util.List;

/**
 * @author 何维佳
 * @version 1.0
 * @className ResourceInfo
 * @Description TODO
 * @date 2024/12/23 13:43
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("")
@Table(name = "`resource_info`")
@Excel("资源")
public class ResourceInfo {
    @Id
    @Column(name = "`resourceId`")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long resourceId;

    //任务名称
    @TableField(exist = false)
    @ExcelField(value = "任务包名称", width = 100) //导出字段名
    private transient String taskPackageName;

    @Column(name = "`resourceName`")
    @ApiModelProperty("客户名称")
    @ExcelField(value = "客户名称", width = 100) //导出字段名
    private String resourceName;

    // 电话A字段
    @Column(name = "`phoneA`")
    @ApiModelProperty("电话A")
    @ExcelField(value = "电话A", width = 150) //导出字段名
    private String phoneA;

    // 电话B字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`phoneB`")
    @ApiModelProperty("电话B")
    @ExcelField(value = "电话B", width = 150) //导出字段名
    private String phoneB;

    // 是否呼叫字段，用整数表示不同状态，对应数据库中的int类型
    @Column(name = "`isCall`")
    @ApiModelProperty("是否呼叫 0:未呼叫 1：已呼叫 默认：0")
    private Integer isCall;

    //是否呼叫
    @TableField(exist = false)
    @ExcelField(value = "是否呼叫", width = 50) //导出字段名
    private transient String isCallStr;

    // 资源标签字段，用整数表示不同标签类型，对应数据库中的int类型
    @Column(name = "`resourceTag`")
    @ApiModelProperty("资源标签 0:未标记 1:无效 2:待定 3:有效 默认：0")
    private Integer resourceTag;

    // 资源标签字段，用整数表示不同标签类型，对应数据库中的int类型
    @Column(name = "`resourceTag`")
    @ApiModelProperty("资源标签 0:未标记 1:无效 2:待定 3:有效 默认：0")
    @ExcelField(value = "资源标签", width = 50) //导出字段名
    private String resourceTagStr;


    // 归属人ID字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`userId`")
    @ApiModelProperty("归属人")
    private Long userId;

    @TableField(exist = false)
    @ExcelField(value = "归属人", width = 150) //导出字段名
    private transient String userName;

    // 创建时间字段，对应数据库中的timestamp类型
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "`createTime`")
    @ApiModelProperty("创建时间")
    @ExcelField(value = "创建时间", width = 150) //导出字段名
    private String createTime;

    // 联系人姓名字段
    @Column(name = "`linkman`")
    @ApiModelProperty("联系人姓名")
    @ExcelField(value = "联系人名称", width = 150) //导出字段名
    private String linkman;


    // 客户是否存在字段，用整数表示不同状态，对应数据库中的int类型
    @Column(name = "`isExists`")
    @ApiModelProperty("客户是否存在 0:不存在 1：已存在 默认：0")
    private Integer isExists;

    // 客户是否存在字段，用整数表示不同状态，对应数据库中的int类型
    @Column(name = "`isExists`")
    @ApiModelProperty("客户是否存在 0:不存在 1：已存在 默认：0")
    private String isExistsStr;

    // 行业类别字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`industryId`")
    @ApiModelProperty("行业类别")
    private Integer industryId;

    //行业类别
    @TableField(exist = false)
    @ExcelField(value = "行业类别", width = 150) //导出字段名
    private transient String industryOptions;

    // 备注字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`remark`")
    @ApiModelProperty("备注")
    @ExcelField(value = "备注", width = 200) //导出字段名
    private String remark;

    // 客户类型字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`clientTypeId`")
    @ApiModelProperty("客户类型")
    private Integer clientTypeId;

    // 客户状态字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`clientStatusId`")
    @ApiModelProperty("客户状态")
    private Integer clientStatusId;

    // 生命周期字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`lifeCycle`")
    @ApiModelProperty("生命周期 0:潜在 1:签约 2:重复购买 3:失效 默认：0")
    private Integer lifeCycle;

    //生命周期
    @TableField(exist = false)
    @ExcelField(value = "生命周期", width = 100) //导出字段名
    private transient String lifeCycleStr;

    // 来源字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`sourceId`")
    @ApiModelProperty("来源")
    private Integer sourceId;

    // 最后呼叫时间字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`lastCallTime`")
    @ApiModelProperty("最后呼叫时间")
    @ExcelField(value = "最后呼叫时间", width = 150) //导出字段名
    private String lastCallTime;

    // 跟进ID字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`followId`")
    @ApiModelProperty("跟进ID")
    private Integer followId;

    // 是否删除字段，用整数表示不同状态，对应数据库中的int类型
    @Column(name = "`isDelete`")
    @ApiModelProperty("是否删除 0:未删除 1：已删除 默认：0")
    private Integer isDelete;

    // 删除时间字段，可为空，对应数据库中可为NULL的情况
    @Column(name = "`deleteTime`")
    @ApiModelProperty("删除时间")
    private String deleteTime;

    // 是否删除字段，用整数表示不同状态，对应数据库中的int类型
    @Column(name = "`labelId`")
    @ApiModelProperty("标签ID")
    private Integer labelId;

    @Column(name = "`editTime`")
    @ApiModelProperty("更新时间")
    private String editTime;


    @Column(name = "`type`")
    @ApiModelProperty("用户类型")
    private Integer type;

    @Column(name = "`accountName`")
    @ApiModelProperty("账户名称")
    private String accountName;

    @Column(name = "`isHighSeas`")
    @ApiModelProperty("是否为公海客户")
    private Integer isHighSeas;

    @Column(name = "`toHighSeasTime`")
    @ApiModelProperty("加入公海时间")
    private Timestamp toHighSeasTime;

    //客户类型
    @TableField(exist = false)
    @ExcelField(value = "客户种类", width = 150) //导出字段名
    private transient String clientTypeOptions;

    //客户状态
    @TableField(exist = false)
    private transient String clientStatusOptions;

    //标签名
    @TableField(exist = false)
    private transient String labelName;


    //来源
    @TableField(exist = false)
    @ExcelField(value = "客户来源", width = 150) //导出字段名
    private transient String sourceOptions;

    //跟进内容
    @TableField(exist = false)
    private transient String followContent;

    //跟进内容
    @TableField(exist = false)
    private transient Long clientPhone;

    //归属部门
    @TableField(exist = false)
    private transient List<Long> ids;

    @TableField(exist = false)
    private transient Integer time;       //时间选择

    @TableField(exist = false)
    private transient String startTime;     //结束时间
    @TableField(exist = false)
    private transient String endTime;       //开始时间

    @TableField(exist = false)
    private Integer highSeasClientId;




    @TableField(exist = false)
    @ExcelField(value = "行业类别", width = 150) //导出字段名
    private transient String industryType;  //行业类型
    // 临时字段，不映射到数据库
    @TableField(exist = false)
    private transient String nick_name;     //用户昵称
    @TableField(exist = false)
    @ExcelField(value = "客户种类", width = 150) //导出字段名
    private transient String clientType;    //客户类型
    @TableField(exist = false)
    @ExcelField(value = "来源", width = 150) //导出字段名
    private transient String source;        //来源

    @TableField(exist = false)
    private transient Long user_id;      //用户id

    @TableField(exist = false)
    private transient String clientStatus;       //客户状态

    @TableField(exist = false)
    private transient Long loginUserRole;       //当前登录账号的角色
    @TableField(exist = false)
    private transient Long loginUserId;       //当前登录对象的id
    @TableField(exist = false)
    private transient String founder;
    @TableField(exist = false)
    private int loginUserType;           //当前登录对象的类型


    /**
     * 客户转移公海时间
     */
    private transient Integer highSeasTime;
    /**
     * 客户回收站有效期
     */
    private transient Integer expiryDay;
    /**
     * 是否启用公海
     */
    private transient Integer isEnabledToHighSeas;


}
